<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        /*  class Promsie {
             // static aaa(){}
             then() {
                 return this;
             }
             catch() {
                 return this;
 
             }
             finally() {
                 return this;
 
             }
         }
  */


        /* 
            let p0 =  Promise.all([p1,p2,p3])

            参数是数组，数组的元素多个promise对象，all返回一个promsie对象
            如果数据中promise对象 都成功了，那么p0 就成功，
            有一个失败 p0 就是失败

        // // 监听 多个promise 什么都完成


            监听 多个promise 谁更快成功
            Promise.race 竞争

             let p0 =  Promise.race([p1,p2,p3])

            参数是数组，数组的元素多个promise对象，all返回一个promsie对象
            如果数组哪个元素先成功了，那么p0 就成功，
               有一个失败 p0 就是失败

        
        */
        let p1 = new Promise(function (r, j) {
            setTimeout(() => {
                console.log('p1成功');
                r(1000)
            }, 1000);
        })
        let p2 = new Promise(function (r, j) {
            setTimeout(() => {
                console.log('p2成功');
                r(2000)
            }, 2000);
        })
        // // 监听 多个promise 什么都完成
        // let p0 = Promise.all([p1, p2]);
        // p0.then(r => {
        //     console.log(r);//[p1的结果，p2的结果]
        //     console.log('p0成功');
        // }).catch(err => {
        //     console.log('p0失败');
        // })

        // 监听 多个promise 谁更快成功
        let p0 = Promise.race([p1, p2]);
        p0.then(r => {
            console.log(r);// 就是 成功的那个promsie的结果
            console.log('p0成功');
        }).catch(err => {
            console.log('p0失败');
        })

        // 创建成功状态的promise对象

        // let p33 = new Promise(function (r, j) {
        //     r()
        // })
        let p3 = Promise.resolve()
        p3.then(function () {
            console.log('p3');
        })
        // 创建失败状态的promise对象
        let p4 = Promise.reject()
        p4.then(function () {
            console.log('p4 then');
        }).catch(function () {
            console.log('p4 catch');
        })


    </script>

</body>

</html>